import os
import yaml
from common.logger import logger


def read_yaml(file_path):
    # 获取当前脚本文件所在的目录
    base_path = os.path.dirname(os.path.abspath(__file__))
    # 假设 data 目录在项目根目录下
    full_path = os.path.join(base_path, '..', 'data', file_path)

    # 尝试打开指定的文件
    print(f"Attempting to open: {full_path}")

    # 打开文件并安全地加载其内容
    # 使用with语句确保文件在操作完成后自动关闭
    # 使用yaml.safe_load方法从文件中加载yaml格式的数据，该方法可以将yaml格式的字符串转换为Python对象
    with open(full_path, 'r') as file:
        return yaml.safe_load(file)


def get_test_cases(file_name='test_data.yaml'):
    # 读取 test_data.yaml 文件中的所有测试用例数据
    data = read_yaml('test_data.yaml')

    # 确认读取的数据包含 test_cases 键，并且该键的值是一个列表
    test_cases = data.get('test_cases', [])
    if not isinstance(test_cases, list):
        raise ValueError("YAML 文件中的 test_cases 不是一个列表")
    logger.info(f"读取到 {len(test_cases)} 个测试用例")
    return test_cases


def get_test_wx(file_name='test_wxmp.yaml'):
    # 读取 test_data.yaml 文件中的所有测试用例数据
    data = read_yaml('test_wxmp.yaml')

    # 确认读取的数据包含 test_ 键，并且该键的值是一个列表
    test_wx = data.get('test_wx', [])
    if not isinstance(test_wx, list):
        raise ValueError("YAML 文件中的 test_cases 不是一个列表")
    logger.info(f"读取到 {len(test_wx)} 个测试用例")
    return test_wx
